package hd.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * 时间处理工具
 * <p/>
 * Created by haidy on 14/11/19.
 */
public class TimeUtil {

    public static String getTime(long time) {
        Date date = new Date(time);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
        return format.format(date);
    }

    /**
     * 将字符串转为日期类型
     *
     * @param date 时期
     * @return 日期类型
     */
    public static Date toDate(String date) {
        try {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse(date);
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 将Data 转为String
     *
     * @param date date
     * @return string time
     */
    public static String toString(Date date) {
        return toString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA), date);
    }

    /**
     * 将Data转为String
     *
     * @param dateFormat format
     * @param date       date
     * @return string time
     */
    public static String toString(SimpleDateFormat dateFormat, Date date) {
        return dateFormat.format(date);
    }

    /**
     * 将Data转为String
     *
     * @param template 模板
     * @param date     date
     * @return string time
     */
    public static String toString(String template, Date date) {
        return getSimpleDateFormat(template).format(date);
    }

    /**
     * 获取当前时间
     *
     * @param pattern 匹配的模式
     * @return 时间
     */
    public static String getTime(String pattern) {
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA);
        return format.format(date);
    }

    /**
     * 获取当前精确到秒的时间
     *
     * @return 精确到秒的时间
     */
    public static String getTimeATS() {
        return getTime("yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 获取今天日期
     *
     * @return date
     */
    public static String getTodayDate() {
        return getTime("yyyy-MM-dd");
    }

    public static SimpleDateFormat getDayDataFormat() {
        return getSimpleDateFormat("yyyy-MM-dd");
    }

    /**
     * 获取SimpleDateFormat
     *
     * @param template 格式
     * @return data format
     */
    public static SimpleDateFormat getSimpleDateFormat(String template) {
        return new SimpleDateFormat(template, Locale.CHINA);
    }

    /**
     * 是否为同一天
     *
     * @param date data
     * @return bool
     */
    public static boolean isSameDay(Date date) {
        return getTodayDate().equals(toString(getDayDataFormat(), date));
    }

    /**
     * 是否为同一天
     *
     * @param date date
     * @return bool
     */
    public static boolean isSameDay(String date) {
        return isSameDay(toDate(date));
    }

    /**
     * 今天星期几
     *
     * @return 表示今天星期几
     */
    public static int getTodayWeek() {
        Calendar c = Calendar.getInstance();
        c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
        int w = c.get(Calendar.DAY_OF_WEEK);
        if (w == 1)
            return 7;
        else
            return w - 1;
    }
}